Često je potrebno elemente nekog niza sortirati u rastući ili opadajući poredak. Algoritama za sortiranje elemenata postoji mnogo. Spisak najpopularnijih algoritama možete videti ovde : http://en.wikipedia.org/wiki/Sorting_algorithm . Ovde će biti dat primer algoritma koji koristi "metod selekcije" koji još nazivamo selection sort. Algoritam je baziran na višestrukom ponavljanju algoritma sa određivanje minimalnog elementa. Realizuje se pomoću dva for ciklusa koji se nalaze jedan u drugom. Ukoliko sortiramo elemente u rastući niz (preciznije kažemo neopadajući niz) unutrašnji ciklus zapravo pronalazi minimalni element i razmenjuje ga sa elementom koji ima najmanji indeks (u delu niza koji nije sortiran), a spoljašnji ciklus obezbeđuje da se algoritam iz unutrašnjeg ciklusa ponovi više puta (na delu niza koji nije sortiran - dakle u svakom prolazu unutrašnji ciklus "prolazi" kroz sve kraći i kraći deo niza).
Primer: Napisati program koji sortira i ispisuje zadati niz A, n realnih brojeva u neopadajućem poretku. Program Sort1; {selection sort} Const Max = 100; Type Niz = array [1..Max] of real; Var i, j, n : integer; pom : real; A : Niz; BEGIN write ('unesite broj elemenata niza ' ); readln (n); {unos} for i:=1 to n do begin write ('A[',i,']= '); readln (A[i]); end; {sortiranje} for i:=1 to n-1 do for j:=1 to n do if A[i] > A[j] then Begin {razmena} pom:= A[i]; A[i]:=A[j]; A[j]:=pom; End; {ispis sortiranog niza} writeln ('Sortirani niz'); for i:= 1 to n do writeln (A[i]:10:5); END. Napomena: algoritam za sortiranje koristi algoritam da razmenu vrednosti dve promenljive. U tom delu programa pomoćna promenljiva (pom) mora imati tip koji odgovara baznom tipu niza (u ovom primeru niz A je niz realnih vrednosti pa i promenljiva pom mora biti tipa real). |